﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.CBD.Conn;
using MJM.SPP.EntidadesNegocio;
using System.Data;
using System.Data.SqlClient;

namespace MJM.SPP.AccesoDatos
{
    public class AccesoInterPersonaAD
    {
        public int Insertar(AccesoInterPersonaEN obj)
        {
            int codigo = 1;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_PERACC_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmAcceso, prmUsuario;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@vPERACC_chUSUACC";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = obj.PERACC_chUSUACC;
                cmd.Parameters.Add(prmUsuario);

                prmAcceso = cmd.CreateParameter();
                prmAcceso.ParameterName = "@vACCINT_P_inID";
                prmAcceso.SqlDbType = SqlDbType.Int;
                prmAcceso.Value = obj.ACCINT_P_inID;
                cmd.Parameters.Add(prmAcceso);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                codigo = 0;
            }

            return codigo;
        }

        public List<AccesoInterPersonaEN> Listar(string usuario)
        {
            List<AccesoInterPersonaEN> lst = new List<AccesoInterPersonaEN>();
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_PERACC_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr;
            AccesoInterPersonaEN obj;
            SqlParameter prmUsuario;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@vPERACC_chUSUACC";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = usuario;
                cmd.Parameters.Add(prmUsuario);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    obj = new AccesoInterPersonaEN();
                    obj.PERACC_P_inID = dr.GetInt32(0);
                    obj.PERACC_chUSUACC = dr.GetString(1);
                    obj.ACCINT_P_inID = dr.GetInt32(2);
                    obj.PERACC_inFLAELI = dr.GetInt32(3);
                    obj.NombreUsuario = dr.GetString(4);
                    obj.Oficina = dr.GetString(5);
                    obj.Grupo = dr.GetString(6);
                    lst.Add(obj);
                }
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Eliminar(int IdAcceso)
        {
            int result = 1;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_PERACC_Eliminar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmId;
            try
            {
                prmId = cmd.CreateParameter();
                prmId.ParameterName = "@vPERACC_P_inID";
                prmId.SqlDbType = SqlDbType.Int;
                prmId.Value = IdAcceso;
                cmd.Parameters.Add(prmId);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                result = 0;
            }
            return result;
        }
    }
}
